草庐IT

c++ tcp多线程

全部标签

c++ - 如何获取我的线程的语言环境名称?

例如,我可以使用_create_locale在我的C程序中设置语言环境因此:localeUS=_create_locale(LC_ALL,"English_UnitedStates.1252");但我需要的是相反的,即为调用线程检索语言环境名称(上面函数的第二个参数)。知道怎么做吗?附言。我知道现代Windows使用LCID。我需要此语言环境名称以与旧代码兼容。 最佳答案 希望您可以使用标准C++。来自std::locale::name:例子#include#include#includeintmain(){std::localel

c++ - 如何获取当前进程的线程 ID 列表

EnumProcess或CreateToolhelp32Snapshot函数帮助我们获取进程信息,包括进程ID。但是我想知道获取当前进程的线程id列表。DWORDGetMainThreadId(DWORDpId){LPVOIDlpThId;_asm{moveax,fs:[18h]addeax,36mov[lpThId],eax}HANDLEhProcess=OpenProcess(PROCESS_VM_READ,FALSE,pId);if(hProcess==NULL)returnNULL;DWORDtId;if(ReadProcessMemory(hProcess,lpThId,&t

windows - 如何在 Windows 中获得线程句柄的访问权限 THREAD_QUERY_INFORMATION

我想使用GetExitCodeThread()。MSDN文档说,“句柄必须具有THREAD_QUERY_INFORMATION或THREAD_QUERY_LIMITED_INFORMATION访问权限。”我使用_beginthreadex()创建我的线程。当我调用这个API时,我应该如何设置THREAD_QUERY_INFORMATION标志?它应该是initFlag的一部分吗?文档没有说明必须如何准确设置此标志。 最佳答案 _beginthreadex返回的句柄已经足够访问线程以查询有限的信息。毕竟它有终止线程的权限,这远不止查询

c++ - #include<线程>,错误无法打开源文件 "thread"

我期待在Windows上用C++实现多线程,我找到了链接http://www.cplusplus.com/reference/thread/thread/作为对线程的解释,在给定的示例中他们提到了线程的标题命名,实际上我正在Microsoftvisualstudio2010中编写代码,它说错误无法打开源文件“thread”,请帮助我这是否有帮助,或者请向我推荐任何其他有帮助的网站,实际上我是高级C++的初学者,在此先感谢。 最佳答案 是C++11header,VisualStudio2010不实现C++11。尝试更新到VisualS

windows - Windows 8.1 中线程的最大可能线程数是多少?

Windows8.1最多可以生成多少个线程,哪些因素会限制线程数? 最佳答案 与Windows中的大多数限制一样,这受到可用内存的限制。当所有可用的虚拟内存都被线程堆栈(每个1MB)占用时,一个32位进程会略微超过2000个线程。64位进程受提交分配所需的分页文件大小的限制。好几千,要看分页文件增长多快才能满足程序的需要。内核的分页内存池也有限制,每个线程都有一个内核堆栈,以便它可以进行内核调用,通常每个线程24KB。这些限制远远超出了程序员在不让脚掉落的情况下可以保持在空中的球的数量。他会跛行很长时间,线程错误非常难以解决。Mar

c++ - 线程阻止创建窗口

所以我有一个win32程序,它使用HWNDwindow=CreateWindowEx(WS_EX_CLIENTEDGE,L"STATIC",L"Hi",WS_CHILD|WS_VISIBLE,0,0,120,20,hWnd,(HMENU)HI创建一个窗口,GetModuleHandle(NULL),NULL);然后我用std::threadth=std::thread(print,hWnd);创建了一个线程并使用th.join();启动它但是,直到线程完成执行后才创建窗口,即使线程是在窗口之后创建的。 最佳答案 调用th.join(

用于从外部线程更改标签文本的 C# 通用方法。

好吧,所以这是(希望)一个非常简单的修复,但我正在尝试创建一个通用方法来允许外部访问标签,现在Windows文档确实针对单个案例给出了一个示例delegatevoidSetTextCallback(stringtext);...someothercode...privatevoidSetText(stringtext){//InvokeRequiredrequiredcomparesthethreadIDofthe//callingthreadtothethreadIDofthecreatingthread.//Ifthesethreadsaredifferent,itreturnst

c++ - 一个线程写入一个变量,另一个线程读取该变量我(C++11 之前)如何保护该变量?

我在C++11之前工作,否则我只会使用包含线程和原子变量来满足我的需要,但是,不能那样做。得到一个在实例化时启动多个线程的类。在一个线程启动函数中,我有类似的东西:voidThisClass::ThisThread(){while(runThisThread){//doingstuff}}另一个函数是:voidThisClass::StopThisThread(){runThisThread=false;//'runThisThread'variableis'volatilebool'}一个线程将根据另一个线程分配的索引咀嚼缓冲区。因此,一个线程会分配一个值,而另一个线程除了读取该值外

windows - 尝试在 Windows 32 位系统中创建超过最大可能数量的线程

当我尝试创建另一个线程时会发生什么(在达到最大线程数之后?) 最佳答案 当资源用完时,CreateThread将失败。ERROR_NOT_ENOUGH_MEMORY在正常配置中,ERROR_NO_SYSTEM_RESOURCES具有小堆栈保留。参见PushingtheLimitsofWindows:ProcessesandThreads了解更多详情。 关于windows-尝试在Windows32位系统中创建超过最大可能数量的线程,我们在StackOverflow上找到一个类似的问题:

c++ - 仅消息窗口中的线程泵消息

我需要创建一个dll来管理Windows8.1/10上的一些IP蓝牙低功耗设备。我的第一个挑战是能够拦截连接/断开连接事件。我按照MSDN对registeringBluetoothdevicenotifications的说明设法实现了这一点,并按照RegisteringforDeviceNotifications例子。结果是一个工作控制台应用程序。接下来,我希望将它包装在一个DLL中,并有一个专门的线程泵来处理纯消息窗口的消息。问题:这是一个合理的解决方案,还是我最好使用调用线程为此窗口(显然既不是单一窗口也不是主要窗口)泵送消息?如果这是要走的路,我该如何创建一个线程来为特定窗口发送